package com.sparrow.source.common.utils;

import com.alibaba.fastjson.JSONArray;

/**
 * @author bryceyung
 * @since 2024/11/25
 */
public class JsonFormatUtils {

    public static JSONArray parseJsonArray(String jsonObjStr) {
        JSONArray array = new JSONArray();
        int firstJsonEndIndex = findFirstJsonObjectEndIndex(jsonObjStr);
        String firstJson = jsonObjStr.substring(0, firstJsonEndIndex + 1);
        array.add(firstJson);
        if (firstJsonEndIndex + 1 >= jsonObjStr.length()) {
            return array;
        } else {
            String secondJson = jsonObjStr.substring(firstJsonEndIndex + 1);
            array.add(secondJson);
        }
        return array;
    }

    private static int findFirstJsonObjectEndIndex(String jsonString) {
        // 用于跟踪花括号的平衡
        int balance = 0;
        for (int i = 0; i < jsonString.length(); i++) {
            char c = jsonString.charAt(i);
            if (c == '{') {
                balance++;
            } else if (c == '}') {
                balance--;
                if (balance == 0) {
                    // 当平衡为0时，找到了第一个JSON对象的结束位置
                    return i;
                }
            }
        }
        // 如果找不到匹配的'}'，则抛出异常
        throw new IllegalArgumentException("Invalid JSON string: unbalanced braces");
    }

}
